package com.wn.user.service;

import com.wn.common.entity.MyParam;
import com.wn.common.entity.MyRsp;
import com.wn.common.pojo.User;
import com.wn.user.param.PropertyParam;
import org.apache.ibatis.annotations.Param;

import javax.servlet.http.HttpServletResponse;

/**
 * @BelongsProject: shared_parking
 * @BelongsPackage: com.wn.user.service
 * @Author:    廖刚
 * @CreateTime: 2020-06-10 19:52
 * @Description:
 */
public interface UserService {




    //动态添加一个用户
    Integer addUser(User user);

    //查询所有用户 支持多条件分页排序查询
    Object getAllUser(MyParam<User> param);

    //根据id获取用户对象
    User getUserById(String uId);

    //通过用户名判断是否存在这样的用户
    boolean existUserByUsername(String username);

    //通过id物理删除一个用户对象
    Integer deleteUserTrueById(String uId);

    //通过id逻辑删除一个用户对象
    Integer deleteUserLogicalById(String uId);

    //恢复一个被逻辑删除的用户对象
    Integer recoverUserById(String uId);

    //根据id来条件修改一个对象
    MyRsp updateUser(User user);

    //用户登录
    MyRsp login(User user, HttpServletResponse response);

    //抢租客注册
    MyRsp register(User user, String reg);

    //用户忘记密码，根据手机号和验证码重置密码
    MyRsp updatePass(User user,String reg);


    //忘记密码时用户重置，数据库有这个用户才进行修改，需要发送验证码
    public MyRsp getReg(String username);

    //根据手机号来判断手机号是否已注册，如果未注册，向手机发送验证码"
    MyRsp getYanzhenma(String username);


    //上传身份证图片到nginx中，并且将地址返回，存入到数据库
    MyRsp uploadIdCardImg(String imgstr,String token);

    //用户实名认证，包含用户的真实姓名，还有用户的身份证号码
    MyRsp auth(User user,String token);

    //根据token获取用户信息
    MyRsp getUserInfo(String token);

    //用户退出登陆
    MyRsp logout(HttpServletResponse response);

    //修改用户状态
    MyRsp setUserStatus(User user,String token);

    //显示抢租客需要审核的信息，
    Object tenantList(Integer page,Integer rows,String superSearchKeyWord,Integer isDeleted,String sort,Integer roleId);

    //添加用户的车牌号码
    MyRsp addCarNumber(User user,String token);

    //对用户进行锁定和解锁
    MyRsp setUserCode(User user);

    //对抢租客用户信息进行管理
    Object tenantManage(Integer page,Integer rows,String superSearchKeyWord,Integer code,String pageParam,Integer roleId);

    //物业方注册
    MyRsp propertyRegister(PropertyParam propertyParam);

    //出租方注册
    MyRsp lessorRegister(PropertyParam propertyParam);

    //获取用户电话 根据id
    User getUserByIdTel(String uId);
}
